Skip to content

Conversation

@moradology
Copy link
Contributor

@moradology moradology commented Feb 26, 2025

This PR fixes attribute updating logic by clearing in calls to put and removing clear calls from all update_attributes methods. It also fixes an apparent oversight in the JSON type (advise if I'm wrong) which didn't allow lists. Sequence should handle both tuple and list

closes: #2867

TODO:

  • Add unit tests and/or doctests in docstrings
  • Add docstrings and API docs for any new/modified user-facing classes and functions
  • New/modified features documented in docs/user-guide/*.rst
  • Changes documented as a new file in changes/
  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

@github-actions github-actions bot added the needs release notes Automatically applied to PRs which haven't added release notes label Feb 26, 2025
@github-actions github-actions bot removed the needs release notes Automatically applied to PRs which haven't added release notes label Feb 26, 2025
@moradology moradology marked this pull request as ready for review February 26, 2025 21:16
"""
# metadata.attributes is "frozen" so we simply clear and update the dict
self.metadata.attributes.clear()
self.metadata.attributes.update(new_attributes)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in principle we do want the metadata documents to be immutable, but as long as we are using plain python dicts for the attributes, immutability is not realistic. so updating in-place is fine.

Copy link
Contributor

@dcherian dcherian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. thanks

>>> attrs
{'a': 3, 'c': 4}
"""
self._obj.metadata.attributes.clear()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this a separate bug fix to the change in zarr/core/array.py? If so, it should get it's own changelog entry, and test.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is to keep put (which formerly was using the undesired behavior in update_attributes) working as expected rather than a new feature or bugfix

@dstansby dstansby merged commit 7520870 into zarr-developers:main Feb 27, 2025
30 checks passed
@ianhi ianhi mentioned this pull request Mar 12, 2025
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

update_attributes deletes existing attributes

4 participants